/*===============================================
*   文件名称：head.h
*   创 建 者：     
*   创建日期：2025年08月26日
*   描    述：
================================================*/
#ifndef __HEAD_H__
#define __HEAD_H__

#include <stdio.h>
#include <string.h>
#include <strings.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>


#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/types.h>
#include <dirent.h>

#include <sys/wait.h>
#include <signal.h>
#include <pthread.h>

#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>

#include<sqlite3.h>

void *thread_choice(void *arg);
int sql_init(sqlite3 **db);
void init_query_result(QueryResult *result, int initial_capacity);
void do_register(int cfd, sqlite3 *db, const char *order);
int do_login(int cfd, sqlite3 *db, const char *order);
void send_char(int cfd,char ch);
int Click_where(int cfd);
int select_where(char ch, sqlite3 *db, int cfd);
int select_infrom_id(sqlite3 *db, int cfd);
void free_query_result(QueryResult *result);
static int callback(void *data, int argc, char **argv, char **azColName);
int query_and_store_dynamic(sqlite3 *db,  char ch, QueryResult *result);
typedef struct
{
    char **rows;   // 行数据数组
    int row_count; // 行数
    int capacity;  // 数组容量
} QueryResult;

#endif

